#include <iostream>

using namespace std;

const int N = 1e6 + 10;

int a[N], b[N], c[N];
int la, lb, lc;
// 比大小
bool cmp(string& x, string& y)
{
    // 1.先比较长度
    if(x.size() != y.size()) return x.size() < y.size();
    // 2.如果长度相等，再按照 字典序 的方式比较
    return x < y;
}
// 高精度减法c = a - b
void sub(int c[], int a[], int b[])
{
    for(int i = 0; i < lc; i++)
    {
        c[i] += a[i] - b[i]; // 对应位相减
        // 处理负数借位
        if(c[i] < 0)
        {
            c[i + 1] -= 1; // 借位
            c[i] += 10;
        }
    }
    // 处理前导零
    while(lc > 1 && c[lc - 1] == 0) lc--;
}
int main()
{
    string x, y; cin >> x >> y;
    // 1.比大小
    if(cmp(x, y))
    {
        swap(x, y); // x < y 就交换，确保 大数减小数
        cout << '-';
    }

    // 2.拆分每一位，逆序放在数组中
    la = x.size(); lb = y.size(); lc = max(la, lb);
    for(int i = 0; i < la; i++) a[la - 1 - i] = x[i] - '0';
    for(int i = 0; i < lb; i++) b[lb - 1 - i] = y[i] - '0';

    // 3.模拟减法(subtraction)过程
    sub(c, a, b);

    // 4.输出结果
    for(int i = lc - 1; i >= 0; i--) cout << c[i];

    return 0;
}